package cn.zqy.demo2.day03.demo03;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/**
 * Comparator和Comparable的区别
 *         Comparable:自己(this)和别人(参数)比较,自己需要实现Comparable接口,重写比较的规则compareTo方法
 *         Comparator:相当于找一个第三方的裁判,比较两个
* */

public class Demo03SortComparator {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        Collections.addAll(list,7,9,4,1);
        System.out.println(list);      // [7, 9, 4, 1]
        // Comparator接口可以实现自定义排序，实现Comparator接口时，要重写compare方法
        Collections.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o1 - o2;
            }
        });
        System.out.println(list);       //[1, 4, 7, 9]

        ArrayList<Student> stu = new ArrayList<>();
        stu.add(new Student("妙蛙种子",6));
        stu.add(new Student("b皮卡丘",5));
        stu.add(new Student("喷火龙",10));
        stu.add(new Student("a皮卡丘",5));

        Collections.sort(stu, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                int re = o1.getAge() - o2.getAge();
                // 在相等的情况下，比较字符串
                if (re == 0) {
                    return o1.getName().charAt(0) - o2.getName().charAt(0);
                } else {
                    return re;
                }
            }
        });
        System.out.println(stu);
    }
}
